{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 采用 xgboost 模型完成商品分类"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1、导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np  # 矩阵操作\n",
    "import pandas as pd # SQL数据处理\n",
    "\n",
    "from sklearn.metrics import r2_score  #评价回归预测模型的性能\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "import matplotlib.pyplot as plt   #画图\n",
    "import seaborn as sns\n",
    "\n",
    "# 图形出现在Notebook里而不是新窗口\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2、数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 数据读取\n",
    "注：数据已经提前被处理，只需根据作业要求读取 RentListingInquries_FE_train.csv 文件即可"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "path = './data/' \n",
    "fileName = 'RentListingInquries_FE_train.csv'\n",
    "\n",
    "data=pd.read_csv(path+fileName)\n",
    "# 通过观察前5行，了解数据每列（特征）的概况\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 228 entries, bathrooms to interest_level\n",
      "dtypes: float64(9), int64(219)\n",
      "memory usage: 85.8 MB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "bathrooms                 0\n",
       "bedrooms                  0\n",
       "price                     0\n",
       "price_bathrooms           0\n",
       "price_bedrooms            0\n",
       "room_diff                 0\n",
       "room_num                  0\n",
       "Year                      0\n",
       "Month                     0\n",
       "Day                       0\n",
       "Wday                      0\n",
       "Yday                      0\n",
       "hour                      0\n",
       "top_10_manager            0\n",
       "top_25_manager            0\n",
       "top_5_manager             0\n",
       "top_50_manager            0\n",
       "top_1_manager             0\n",
       "top_2_manager             0\n",
       "top_15_manager            0\n",
       "top_20_manager            0\n",
       "top_30_manager            0\n",
       "cenroid                   0\n",
       "distance                  0\n",
       "display_address_pred_0    0\n",
       "display_address_pred_1    0\n",
       "display_address_pred_2    0\n",
       "1br                       0\n",
       "24                        0\n",
       "2br                       0\n",
       "                         ..\n",
       "sublet                    0\n",
       "subway                    0\n",
       "super                     0\n",
       "superintendent            0\n",
       "swimming                  0\n",
       "tenant                    0\n",
       "term                      0\n",
       "terrace                   0\n",
       "time                      0\n",
       "tons                      0\n",
       "train                     0\n",
       "true                      0\n",
       "tv                        0\n",
       "unit                      0\n",
       "utilities                 0\n",
       "valet                     0\n",
       "video                     0\n",
       "view                      0\n",
       "views                     0\n",
       "virtual                   0\n",
       "walk                      0\n",
       "walls                     0\n",
       "war                       0\n",
       "washer                    0\n",
       "water                     0\n",
       "wheelchair                0\n",
       "wifi                      0\n",
       "windows                   0\n",
       "work                      0\n",
       "interest_level            0\n",
       "Length: 228, dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### 查看是否有空值\n",
    "data.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(49352, 228)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查看分类，响应值 y 为用户对该公寓的感兴趣程度，根据特征编码文件知映射为 {'low': 2, 'medium': 1, 'high': 0}，即用户感兴趣程度分为高（数字0）、中（数字1）、低（数字2）三类，"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 0])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['interest_level'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 从原始数据中分离输入特征x和输出y\n",
    "X = data.drop('interest_level', axis = 1)\n",
    "y = data['interest_level']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "columns = X.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 将训练数据分割，因数据量较大，后续cv太慢故增大测试集的比例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将数据分割训练数据与测试数据\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# 随机采样20%的数据构建测试样本，其余作为训练样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state = 0)\n",
    "#print('X_train.shape: %s %s'%X_train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "默认参数，此时学习率为0.1，比较大，观察弱分类数目的大致范围\n",
    "（采用默认参数配置，看看模型是过拟合还是欠拟合）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "    #Print model report:\n",
    "    # print (\"logloss of train :\" )\n",
    "    # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 9}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "#初次对模型进行训练\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/root/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig( 'n_estimators_1.png' )\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/root/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 560x560 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[25:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(20,cvresult.shape[0]+20)\n",
    "        \n",
    "fig = plt.figure(figsize=(4, 4), dpi=140)\n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
